package com.foreknow.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * Filter是一个可重用的组件
 * 创建一个过滤器，实现转换字符编码集
 */
public class CharacterEncodingFilter implements Filter {
    private String encoding = "ISO8859-1";
    private FilterConfig config;

    @Override
    public void init(FilterConfig config) throws ServletException {
        this.config = config;
        encoding = config.getInitParameter("encoding");
        System.out.println(encoding);
    }

    //核心的拦截处理方法
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        //设置服务器端向客户端响应的内容的类型(MIME)
        response.setContentType("text/html;charset=utf-8");
        //设置客户端向服务器端请求的字符编码集为UTF-8
        request.setCharacterEncoding(encoding);
        //如果还有其他的过滤器，那么就要交给下一个过滤器来处理,如果没有其他的过滤器，就将请求交给Servlet来处理
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {
        config = null;
    }
}
